The XML (eXtensible Markup Language) specification established by the W3C Organization provides a standardized methodology for exchanging structured data between different mechanisms. The different mechanisms may be different components within the same system (e.g. different program components) or they may be completely separate systems (e.g. systems of different companies, or different servers on the World Wide Web). Basically, XML allows structured data to be exchanged in a textual format using “element tags” to specify structure and to delimit different sets of data.
An example of a portion of an XML document is shown in FIG. 1. In this example, information about a person is being exchanged. To indicate that the information pertains to a person, the “person” element tags are used to delimit the data. Nested within the “person” element tags are two sets of information: (1) a name; and (2) an address. These sets of information are also delimited using the “Name” and “Address” element tags, respectively. Nested within the “Name” element tags are three child elements, namely, a first, middle, and last name, each of which is delimited by respective element tags, and each of which has an associated value. Likewise, nested within the “Address” element tags are four child elements, namely, a street, city, state, and zip code, each of which is delimited by respective element tags, and each of which has an associated value. By delimiting the sets of data using nested element tags in this manner, the XML document makes it clear how the data is structured, and what each set of data represents. As a result, any mechanism that is capable of understanding the element tags used to delimit the data will be able to interpret and process the data. In this manner, XML makes it possible to exchange structured data in a textual, program-independent, and platform-independent manner. It is this general nature of XML that makes it so flexible and versatile. Because of its versatility, XML has grown significantly in popularity in recent years. The above discussion provides just a brief description of the XML specification. More information on XML may be found on the W3C website at [www.]w3c.org (Note: the reference to w3c.org is not intended to be a hyperlink.) All of the information on that website, as of the filing date of the present application, is incorporated herein by reference.
In some instances, before data in an XML document can be processed or rendered, the XML document first needs to be transformed. For example, if the information of the person shown in FIG. 1 is to be rendered on a cellular phone display, and the cellular phone display does not have enough room for a middle name, then the XML document may first need to be transformed by removing the “middle” name element before the information is provided to the cellular phone to be displayed. As another example, the element tag used in one system may differ from the element tag used in another system. For example, the “person” element tag in one system may correspond to the “employee” element tag in another system. Before the XML document is processed into the other system, the XML document is first transformed to change the “person” element tag to an “employee” element tag. These are examples of simple transformations that can be made to an XML document. Many other more complex transformations may also be made.
To enable an XML document (referred to as a source document) to be transformed into another document (referred to as a target document), there is currently provided a transformation language, known as XSLT (eXtensible stylesheet language transformation). Using XSLT, a transformation document can be created which, when processed together with the source document, gives rise to the target document. In effect, the transformation document specifies the transformations that need to be made to the source document to derive the target document. For example, the transformation document may specify that whenever a “person” element tag is encountered in the source document, an “employee” element tag should be created in the target document. According to the XSLT specification, the transformation document is itself an XML document; thus, it conforms to all of the requirements to which all XML documents conform.
If it is known from the outset how a source document is to be transformed to derive a target document, then the creation of a transformation document is relatively straightforward. A user or programmer simply creates templates in the transformation document, using XSLT, to implement all of the desired transformations. In many implementations, however, it is not known how a source document is to be transformed to derive a target document. Instead, a user/programmer is simply given a source document and a target document, and asked to create a transformation document that will transform the source document into the target document. This can be a very daunting task because it can potentially require the user/programmer to intensely analyze and compare both documents to determine the transformations that need to be made. If the two documents are lengthy, the amount of manhours required to create the transformation document could be immense. Given the difficulty and the amount of resources currently required to manually create a transformation document from a source and a target document, it is evident that a mechanism for facilitating the document creation process is needed.